package cn.terminus.client.customer.contractinfo.result;

import cn.terminus.client.customer.contractfile.result.ContractFileResult;
import cn.terminus.client.customer.contractsellbystagesinfo.result.ContractSellByStagesInfoResult;
import cn.terminus.client.customer.contractsellclauseinfo.result.ContractSellClauseInfoResult;
import cn.terminus.client.customer.contractselldefylatedeliveryinfo.result.ContractSellDefyLateDeliveryInfoResult;
import cn.terminus.client.customer.contractselldefyloaninfo.result.ContractSellDefyLoanInfoResult;
import cn.terminus.client.customer.contractselldefyoverdueapplicationinfo.result.ContractSellDefyOverdueApplicationInfoResult;
import cn.terminus.client.customer.contractselldefypaymentoverdueinfo.result.ContractSellDefyPaymentOverdueInfoResult;
import cn.terminus.client.customer.custominfo.result.CustomInfoByNameResult;
import cn.terminus.client.customer.custompurposeroom.result.RoomDetailResult;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.Date;
import java.util.List;

/**
 * @author leslie.zhang
 * @date 2021/7/26 5:37 下午
 * 合同详情
 */
@Data
public class SellContractInfoDetailResult implements Serializable {
    private static final long serialVersionUID = -73838413261501328L;
    /**
     * ID
     */
    private Long id;
    /**
     * 合同编号
     */
    private String code;
    /**
     * 合同签订日期
     */
    private LocalDate signTime;
    /**
     * 合同开始时间
     */
    private LocalDate effectiveBeginTime;
    /**
     * 合同结束时间
     */
    private LocalDate effectiveEndTime;
    /**
     * 计算精度code
     */
    private String precisionCode;
    /**
     * 合同标签code,号分割
     */
    private String labelCode;
    /**
     * 租客id
     */
    private Long customerId;
    /**
     * 合同签单人姓名
     */
    private String contractSigner;
    /**
     * 合同签单人电话
     */
    private String contractSignerPhone;
    /**
     * 押金
     */
    private BigDecimal deposit;
    /**
     * 押金字典单位编码
     */
    private String depositUnitCode;
    /**
     * 交付日期
     */
    private LocalDate deliverTime;
    /**
     * 办证日期
     */
    private Integer certificateNumber;
    /**
     * 办证日期单位code 工作日/自然日
     */
    private String certificateUnitCode;
    /**
     * 违约金
     */
    private BigDecimal violation;
    /**
     * 违约金单位编码
     */
    private String violationUnitCode;
    /**
     * 合同类型 1租 2销售
     */
    private Integer type;
    /**
     * 合同状态 1正常 2删除
     */
    private Integer status;
    /**
     * create_user
     */
    private String createUser;
    /**
     * create_time
     */
    private Date createTime;
    /**
     * last_update_user
     */
    private String lastUpdateUser;
    /**
     * last_update_time
     */
    private Date lastUpdateTime;

    /**
     * 物业费
     */
    private BigDecimal propertyFee;
    /**
     * 物业费code
     */
    private String propertyFeeCode;

    @ApiModelProperty(name = "customInfo", value = "客户信息", required = true)
    private CustomInfoByNameResult customInfo;

    @ApiModelProperty(name = "roomDetailResults", value = "房源", required = true)
    private List<RoomDetailResult> roomDetailResults;

    @ApiModelProperty(name = "contractSellClauseInfoResult", value = "条款信息", required = true)
    private ContractSellClauseInfoResult contractSellClauseInfoResult;

    @ApiModelProperty(name = "sellByStagesInfoResults", value = "分期付款信息", required = true)
    private List<ContractSellByStagesInfoResult> sellByStagesInfoResults;

    @ApiModelProperty(name = "sellDefyPaymentOverdueInfoResult", value = "付款逾期", required = true)
    private ContractSellDefyPaymentOverdueInfoResult sellDefyPaymentOverdueInfoResult;

    @ApiModelProperty(name = "loanInfoResult", value = "贷款办理", required = true)
    private ContractSellDefyLoanInfoResult loanInfoResult;

    @ApiModelProperty(name = "sellDefyLateDeliveryInfoResult", value = "交付逾期", required = true)
    private ContractSellDefyLateDeliveryInfoResult sellDefyLateDeliveryInfoResult;

    @ApiModelProperty(name = "defyOverdueApplicationInfoResult", value = "办证逾期", required = true)
    private ContractSellDefyOverdueApplicationInfoResult defyOverdueApplicationInfoResult;

    @ApiModelProperty(name = "fileList", value = "文件", required = true)
    private List<ContractFileResult> fileList;

}
